#include "HaarClassifier.h"

GLOBAL_NAMESPACE_BEGIN
NAMESPACE_MACHINE_LEARNING_BEGIN

struct HaarFeature
{
    int topL;
    int TopR;
    int BotL;
    int BotR;
    int type;
};

class HaarClassiferParams
{
public:
    HaarClassiferParams(HaarClassiferType typ = HAAR_2_RECT_FEATURE)
        : type(typ) 
    {
        feature.type = type;
    }

    HaarClassiferType   type;
    HaarFeature         feature;
    double              threshold;
    int                 bGreater;
};

HaarClassifier::HaarClassifier()
    : params_(new HaarClassiferParams())
{
}

HaarClassifier::~HaarClassifier()
{
}

// training
int     HaarClassifier::train(const Eigen::MatrixXd& trainData, const Eigen::VectorXi& labels, const Eigen::MatrixXd& weights)
{
    return 0;
}

double  HaarClassifier::evalError(const Eigen::MatrixXd& data, const Eigen::VectorXi& labels, const Eigen::MatrixXd& weights)
{
    return 0;
}

// predict
int     HaarClassifier::predict(const Eigen::RowVectorXd& oneData) const
{
    return 0;
}

double  HaarClassifier::evaluate(const Eigen::RowVectorXd& oneData, int classIdx) const
{
    return 0;
}

double  HaarClassifier::evaluate(const Eigen::MatrixXd& data, int dataIdx, int classIdx) const
{
    return 0;
}

int  HaarClassifier::train(const ImageLoader* images, const Eigen::MatrixXi& labels, const Eigen::MatrixXd& weights)
{
    return 0;
}


NAMESPACE_MACHINE_LEARNING_END
GLOBAL_NAMESPACE_END